package com.servicios.negocio.app.sistema.impl;

import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.core.app.otd.ObtenerEntidadesPorCriterioPeticion;
import com.core.app.servicios.ExcepcionServicio;
import com.core.app.servicios.crud.impl.ObtenerEntidadesPorCriterioImpl;
import com.modelo.datos.app.WorkStation;
import com.objetos.transf.datos.app.sistema.ObtenerMacsPeticion;
import com.objetos.transf.datos.app.sistema.ValidarMacPeticion;
import com.objetos.transf.datos.app.sistema.ValidarMacRespuesta;
import com.servicios.datos.app.sistema.ObtenerMacs;
import com.servicios.negocio.ExcepcionServicioNegocio;
import com.servicios.negocio.app.sistema.ValidarMac;

public class ValidarMacImpl implements ValidarMac{
	
	private ObtenerMacs obtenerMacs;

	@Override
	public ValidarMacRespuesta ejecutar(ValidarMacPeticion peticion)
			throws ExcepcionServicio {
		// TODO Auto-generated method stub
		ValidarMacRespuesta respuesta = new ValidarMacRespuesta();
		ObtenerMacsPeticion peticionMacs = new ObtenerMacsPeticion();
		ObtenerEntidadesPorCriterioPeticion peticionEntidad = new ObtenerEntidadesPorCriterioPeticion();
		WorkStation workstation = new WorkStation();
		List<WorkStation> listaEntidades = null;
		Boolean esValido = false;
		
		try{
			
			peticionEntidad.setEntidad(workstation);
			peticionEntidad.setClase(WorkStation.class);
		
			peticionMacs.setPeticionEntidad(peticionEntidad);
		
			listaEntidades = obtenerMacs.ejecutar(peticionMacs).getRespuestaEntidad().getListaEntidades();
			
			//System.out.println("Peticion macs: "+peticion.getMacsCliente());
			
			Pattern pat = Pattern.compile(peticion.getMacsCliente());
			Matcher mat = null;
			System.out.println("listaEntidades: "+listaEntidades);
			for(WorkStation equipo: listaEntidades){
				 System.out.println("************:"+equipo);
				 mat = pat.matcher(equipo.getMac());
				 esValido = mat.matches();
				 if(esValido){
					 // si la mac es valida salimos del ciclo
					 respuesta.setMacCliente(equipo.getMac());
					 break;
				 }
			}
	    
		} catch (Throwable e) {		
			e.printStackTrace();
			throw new ExcepcionServicioNegocio("Error al ejecutar el servicio ValidarUsuarioSistemaImpl.-" + e.getMessage(), e.getCause());
				
		}	
		
	    respuesta.setEsValida(esValido);
		return respuesta;
	}
	
	

	
	
	public static void main (String... args){
		String cadena = "||0A:ED:B9:92:35:BB|00:00:00:00:00:00:00:E0|08:ED:B9:92:35:BC|00:00:00:00:00:00:00:E0|00:00:00:00:00:00:00:E0|00:00:00:00:00:00:00:E0|00:00:00:00:00:00:00:E0|00:00:00:00:00:00:00:E0|00:50:56:C0:00:08|00:50:56:C0:00:01|E0:DB:55:D2:95:B8|08:ED:B9:92:35:BB|00:15:5D:78:C6:E9||";
		//String[] arrayMacs = cadena.split("0A:ED:B9:92:35:BB");
		
		Pattern pat = Pattern.compile(cadena);
	    Matcher mat = pat.matcher("E0:DB:55:D2:95:BB");
	   
	    System.out.println("matches: "+mat.matches());
	    
		System.out.println("fin");
	}





	public ObtenerMacs getObtenerMacs() {
		return obtenerMacs;
	}





	public void setObtenerMacs(ObtenerMacs obtenerMacs) {
		this.obtenerMacs = obtenerMacs;
	}

}
